package main

import (
	"imooc.com/ccmouse/learngo/interface/design/action/interator/all"
	"log"
)

// 应用场景：需要顺序访问一个集合中的元素，而不暴露集合的内部实现时。
// 迭代器模式提供了一种遍历集合对象的统一接口

func main() {
	users := []*all.User{
		{
			Name: "zhangsan",
			Age:  18,
		},
		{
			Name: "zhangsan",
			Age:  18,
		},
	}
	userCollection := all.UserCollection{
		Users: users,
	}
	userIterator := userCollection.CreateIterator()
	for {
		user, ok := userIterator.GetNext()
		if !ok {
			break
		}
		log.Print(user)
	}
}
